#include "Inf_LED.h"

void Inf_LED_Init(void) {
    gpio_config_t led_phy_conf = {
        .pin_bit_mask = (1 << 4 | 1 << 5 | 1 << 6 | 1 << 7),
        // .mode = GPIO_MODE_OUTPUT,
        .mode = GPIO_MODE_INPUT_OUTPUT, // 必须要有INPUT, 才可以读取引脚的电平状态
        .pull_up_en = 1, // 推挽输出、内部上拉没用！！！
        .pull_down_en = 0,
        .intr_type = GPIO_INTR_DISABLE,
    };
    gpio_config(&led_phy_conf);

    Inf_LED_CloseAll(); // 初始化关闭所有LED
}

void Inf_LED_OpenAll(void) {
    // gpio_set_level(LED1, 0);
    gpio_set_level(LED2, 0);
    gpio_set_level(LED3, 0);
    gpio_set_level(LED4, 0);
}

void Inf_LED_CloseAll(void) {
    // gpio_set_level(LED1, 1); // 默认上电就亮LED1, 就不关了
    gpio_set_level(LED2, 1);
    gpio_set_level(LED3, 1);
    gpio_set_level(LED4, 1);
}

void Inf_LED_OpenSpecify(gpio_num_t led_num) {
    gpio_set_level(led_num, 0);
}

void Inf_LED_CloseSpecify(gpio_num_t led_num) {
    gpio_set_level(led_num, 1);
}

void Inf_LED_Toggle(gpio_num_t led_num) {
    uint8_t current_level = gpio_get_level(led_num);

    // if (current_level == 1) {
    //     gpio_set_level(led_num, 0);
    // } else {
    //     gpio_set_level(led_num, 1);
    // }
    gpio_set_level(led_num, !current_level);
}
